﻿/// <reference path="../ControlType.js" />

var Button = function (config) {
    var index = Button.index++;
    this.config = {
        id: 'Button_' + index,
        text: 'Button_' + index, //label的text属性
        ctype: ControlType.button, //控件类型
        moveEnable: false, //是否可以移动
        moveRangeParent: 'document',
        //下拉框的样式
        cls: 'Button2',
        css: {
            'width': '80px'
        } //控制输入框的CSS样式（符合jq的CSS样式即可）
    };
    $.extend(true, this.config, config);
    this.meObj = null;
    this.init(); //执行初始化操作
};

Button.htmlTemplate = "<input type='button' id='{id}' ctype='{ctype}' value='{text}' class='{cls}' moveEnable='{moveEnable}' moveRangeParent='{moveRangeParent}'/>";
Button.index = 1;

Button.prototype.init = function () {
    /// <summary>控件初始化</summary>
    var html = Button.htmlTemplate;
    //控制第一个输入框的样式即可
    for (var item in this.config) {
        //加上toString()是为了处理事件的情况
        html = MyString.replaceAll(html, '{' + item + '}', this.config[item].toString());
    }
    this.meObj = $(html);
    $(this.meObj).css(this.config.css);
};

Button.prototype.appendTo = function (el, x, y) {
    /// <summary>把控件显示在哪个位置上</summary>
    /// <param name="el" type="DomElement/String[id]">父对象</param>
    /// <param name="x" type="int">x坐标</param>
    /// <param name="y" type="int">y坐标</param>
    el = $.getJQObj(el);
    if (el === null) return;
    //做一个父的DIV，方便控制移动(并且必须要设置这个div的宽度，否则后面移动计算位置的时候无法获取宽度）
    //有指定x、y坐标的话，采用绝对定位
    if (typeof (x) !== "undefined" && typeof (y) !== "undefined") {
        $(this.meObj).css({
            'left': x,
            'top': y,
            'position': 'absolute'
        }).appendTo(el);
    }
    else {
        $(this.meObj).appendTo(el);
    }
    //如果可移动，则创建移动事件
    if (this.meObj[0].moveEnable == 'true') {
        JQMove.setMoveEl(this.meObj);
    }
    return this.meObj;
};